Step by Step Build of Standby (dataguard) in two node RAC « All about Database Administration, Tips & Tricks

您所在的位置:网站首页 rac dataguard部署 Step by Step Build of Standby (dataguard) in two node RAC « All about Database Administration, Tips & Tricks

Step by Step Build of Standby (dataguard) in two node RAC « All about Database Administration, Tips & Tricks

2023-04-04 08:11| 来源: 网络整理| 查看: 265

Hello All,

Here are the steps to implement the Standby in RAC and the following is the test environment

Production RAC: Geek DBA12cprmy1 Geek DBA12cprmy2 Standby RAC:- Geek DBA12cdr1 Geek DBA12cdr2

1 . Add standby logs on Primary Database

alter database add standby logfile thread 1 group 10 ('+PRMY_DATA') size 500M; alter database add standby logfile thread 1 group 11 ('+PRMY_DATA') size 500M; alter database add standby logfile thread 1 group 12 ('+PRMY_DATA') size 500M; alter database add standby logfile thread 2 group 13 ('+PRMY_DATA') size 500M; alter database add standby logfile thread 2 group 14 ('+PRMY_DATA') size 500M; alter database add standby logfile thread 2 group 15 ('+PRMY_DATA') size 500M;

2. Enable force logging on Primary Database

alter database force logging;

3. In the standby database home, create and start a listener that offers a static SID entry for the standby database .

In Database home

LISTENER_Geek DBA12cdr1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL=TCP)(HOST = Geek DBA12cdr1-vip.localdomain)(PORT = 1521)) ) ) )

SID_LIST_LISTENER_Geek DBA12cdr1 = (SID_LIST = (SID_DESC = (ORACLE_HOME = /u01/sq/oracle/db/11.2.0.4) (SID_NAME = STBY) ) )

tnsnames.ora

PRMY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12cprmy1-vip.localdomain )(PORT = 2001)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRMY.localdomain) ) )

STBY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12cdr1-vip.localdomain)(PORT = 1521)) (CONNECT_DATA = (UR=A) (SERVER = DEDICATED) (SERVICE_NAME = STBY) ) )

NOTE1 : for STBY tns string "(UR=A)" this required to connect to the standby instance even though the standby instance broguht down or in blocked state .

NOTE2 : Create a dedicated Primary database connection (tns entry shld point directly to any of the instance using VIP ) .Scan ip shld not be used .

4 .Create a TNS entry on Primary server for standby entry.

STBY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12cdr1-vip.localdomain)(PORT = 1521)) (CONNECT_DATA = (UR=A) (SERVER = DEDICATED) (SERVICE_NAME = STBY) ) )

4. Time being modify the tnsnames.ora in primary to local vip or create new tns rather scan as like below

PRMY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Geek DBA12cprmy1-vip.localdomain )(PORT = 2001)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRMY.localdomain) ) )

5. Copy the Passwordfile from Primary server to the standby server and rename it as per the standby instance name.

scp $ORACLE_HOME/dbs/orapwPRMY1 Geek DBA12cdr1-vip.localdomain:/u01/sq/oracle/db/11.2.0.4/dbs/orapwSTBY

6. on standby host create a pfile as given below.

cat initSTBY1.ora DB_NAME=PRMY db_unique_name='STBY' STBY1.instance_name='STBY1' STBY2.instance_name='STBY2' STBY1.instance_number=1 STBY2.instance_number=2 local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=Geek DBA12cdr1-vip.localdomain)(PORT=1521))))'

NOTE : Local_listener parameter is required because we have another listener running from GRID . We are explicituly registering the STBY1 auxiliary instance with the Static Listener

7. Create Audit directory on standby server . Look the Primart database value and create the same directory structure on DR.

mkdir -p /u01/sq/oracle/admin/STBY/adump export ORACLE_SID=STBY sqlplus startup nomount

8 . TNSPING all the tns alias on both primary and standby to crosscheck everthing is working fine .

9 . create a RMAN script on DR server as below and execute it from RMAN prompt

cat rman_script.sql

######################## From production server ########################

connect target sys/*****@PRMY;

connect auxiliary sys/*****@STBY;

run { allocate channel prmy1 type disk; allocate channel prmy2 type disk; allocate channel prmy3 type disk; allocate channel prmy4 type disk; allocate auxiliary channel stby1 type disk; allocate auxiliary channel stby2 type disk; allocate auxiliary channel stby3 type disk; allocate auxiliary channel stby4 type disk;

DUPLICATE DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK SPFILE PARAMETER_VALUE_CONVERT 'PRMY','STBY' SET instance_name='STBY1' SET instance_number='1' SET db_unique_name='STBY' SET control_files='+STBY_DATA','+STBY_FRA' SET db_file_name_convert='+PRMY_DATA','+STBY_DATA','+PRMY_FRA01','+STBY_FRA','+PRMY_DATA/PRMY','+STBY_DATA/STBY','+PRMY_FRA/PRMY','+STBY_FRA/STBY' SET log_file_name_convert='+PRMY_DATA','+STBY_DATA','+PRMY_FRA01','+STBY_FRA','+PRMY_DATA/PRMY','+STBY_DATA/STBY','+PRMY_FRA/PRMY','+STBY_FRA/STBY' SET db_recovery_file_dest='+STBY_FRA' SET db_recovery_file_dest_size='20G' SET log_archive_max_processes='5' SET fal_client='STBY' SET fal_server='PRMY' SET standby_file_management='AUTO' SET log_archive_config='dg_config=(PRMY,STBY)' SET log_archive_dest_2='service=PRMY lgwr async noaffirm COMPRESSION=ENABLE valid_for=(online_logfiles,primary_role) db_unique_name=PRMY';

SQL channel prmy1 "alter system set log_archive_config=''dg_config=(PRMY,STBY)''"; SQL channel prmy1 "alter system set log_archive_dest_2=''service=STBY lgwr async noaffirm COMPRESSION=ENABLE valid_for=(online_logfiles,primary_role) db_unique_name=STBY ''"; SQL channel prmy1 "alter system set log_archive_max_processes=5"; SQL channel prmy1 "alter system set fal_client=STBY"; SQL channel prmy1 "alter system set fal_server=PRMY"; SQL channel prmy1 "alter system set standby_file_management=''AUTO''"; SQL channel prmy1 "alter system archive log current"; sql channel stby1 "alter database recover managed standby database using current logfile disconnect from session"; }

exit

rman @rman_script.sql

10 . copy the Password file to the second instance .

scp $ORACLE_HOME/dbs/orapwPRMY1 Geek DBA12cdr1:/u01/sq/oracle/db/11.2.0.4/dbs/orapwSTBY1 scp $ORACLE_HOME/dbs/orapwPRMY1 Geek DBA12cdr2:/u01/sq/oracle/db/11.2.0.4/dbs/orapwSTBY2

11 . create pfile from the curennt spfile and then create spfile in to the ASM .

create pfile='/home/oracle/test.ora' from spfile;

Modify the parameters, PRMY1 to STBY1 and PRMY2 to STBY2 (attached)

create spfile='+STBY_DATA/STBY/spfileSTBY.ora' from pfile='/home/oracle/test.ora';

12 . Create pfile with the instance names on standby nodes to point to the spfile .

Host: Primary cd $ORACLE_HOME/dbs/ vi initSTBY1.ora spfile='+STBY_DATA/STBY/spfileSTBY.ora'

Host: Second standby host cd $ORACLE_HOME/dbs/ vi initSTBY2.ora spfile='+STBY_DATA/STBY/spfileSTBY.ora'

13 . Register the database with the crs.

srvctl add database -d STBY -o /u01/sq/oracle/db/11.2.0.4/ -p +STBY_DATA01/STBY/spfileSTBY.ora srvctl add instance -d STBY -i STBY1 -n Geek DBA12cdr1 srvctl add instance -d STBY -i STBY2 -n Geek DBA12cdr2 srvctl modify database -d STBY -n STBY -o /u01/sq/oracle/db/11.2.0.4/ -r physical_standby -s mount srvctl modify database -d STBY -o /u01/sq/oracle/db/11.2.0.4/ -p +STBY_DATA/STBY/spfileSTBY.ora

14 .stop and start the database using srvctl .

srvctl start database -d STBY

15. start the recovery mode

alter database recover managed standby database using current logfile disconnect from session;

16 .Check the log synch status on primary and DR . (optional)

set lines 200 pages 1000 select PROCESS,CLIENT_PROCESS,THREAD#,sequence#,status from v$managed_standby;

17. Also set the remote_listener parameter in standby to scap_ip to ensure the connectivity.

Hope this helps!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3